inline Matrix2D::Matrix2D(float r0c0,float r0c1,	float r1c0,	float r1c1)
{
	this->r0c0 = r0c0;
	this->r0c1 = r0c1;
	this->r1c0 = r1c0;
	this->r1c1 = r1c1;
}

inline  Matrix2D Matrix2D::rotate(float angleInRadians)
{
	float cosValue = cos(angleInRadians);
	float sinValue = sin(angleInRadians);
	return Matrix2D(cosValue,-sinValue,
		             sinValue,cosValue);
}
inline Vector2D operator *(const Matrix2D& left,const Vector2D& right)
{
	Vector2D result;
	result.x = left.r0c0*right.x + left.r0c1*right.y;
	result.y = left.r1c0*right.x + left.r1c1*right.y;
	return Vector2D(left.r0c0*right.x + left.r0c1*right.y,
					left.r1c0*right.x + left.r1c1*right.y);
}